import com.mysql.cj.jdbc.MysqlDataSource;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 * Created with IntelliJ IDEA.
 * Description:jdbc查询操作，使用select来操作数据表
 * User: 阿宾
 * Date: 2024-10-28
 * Time: 12:24
 */
public class Demo1 {
    public static void main(String[] args) throws SQLException {
        //1.创建数据源头
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource)dataSource).setUrl(
                "jdbc:mysql://127.0.0.1:3306/java109?serverTimezone=UTC&characterEncoding=utf8&useSSL=false");//发生向下转型
        //需要写MySQL登录的用户名和密码
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("123456");
        //2.建立连接
        Connection connection = dataSource.getConnection();

        //3.构造SQL语句
        //String sql = "select * from student2";
        String sql = "select * from student2 where id = ?";
        //预处理，也就是说检查这个sql语句是否正确，如果正确了，在发给MySQL数据库服务器
        //这样数据库服务器就省下解析的工作了
        PreparedStatement statement = connection.prepareStatement(sql);
        //也可以指定查询条件
        statement.setInt(1,2);//此处含义是select * from student2 where id = 2

        //4.执行SQL
        //ResultSet表示查询的结果集合（临时表），此处要对表进行遍历
        ResultSet resultSet = statement.executeQuery();

        //5.遍历临时表;通过next方法遍历临时表的每一行数据
        while(resultSet.next()){
            //相当于在临时表内部，有一个“光标”，初始情况下指向第一行数据的前一个位置，所以开始调用next指向第一行数据

            //取出一行数据,其中resultSet提供了getxx方法，对应表的列的数据类型，参数就是列名（字段名）
            int id = resultSet.getInt("id");
            String name = resultSet.getString("name");
            //打印
            System.out.println("id = " + id + " ," + "name = " + name);
        }
        //6.释放资源
        resultSet.close();
        statement.close();
        connection.close();
    }
}
